import { defineStore } from 'pinia'

export const useTemplateStore = defineStore('template', {
  state: () => ({
    // 所有模板
    templates: [
      {
        id: '1',
        name: '初级Java简历',
        thumbnail: '/static/templates/java_junior.png',
        workYears: '1-3年',
        level: '初级',
        type: 'it',
        isVip: false,
        createTime: '2023-01-01',
        likeCount: 289,
        useCount: 1782
      },
      {
        id: '2',
        name: '前端开发简历',
        thumbnail: '/static/templates/frontend.png',
        workYears: '3-5年',
        level: '中级',
        type: 'it',
        isVip: false,
        createTime: '2023-02-01',
        likeCount: 345,
        useCount: 2356
      },
      {
        id: '3',
        name: '产品经理简历',
        thumbnail: '/static/templates/product_manager.png',
        workYears: '3-5年',
        level: '中级',
        type: 'it',
        isVip: true,
        createTime: '2023-03-01',
        likeCount: 267,
        useCount: 1543
      },
      {
        id: '4',
        name: '金融分析师简历',
        thumbnail: '/static/templates/financial_analyst.png',
        workYears: '5-10年',
        level: '高级',
        type: 'finance',
        isVip: true,
        createTime: '2023-03-15',
        likeCount: 198,
        useCount: 1245
      },
      {
        id: '5',
        name: 'UI设计师简历',
        thumbnail: '/static/templates/ui_designer.png',
        workYears: '3-5年',
        level: '高级',
        type: 'design',
        isVip: false,
        createTime: '2023-04-01',
        likeCount: 312,
        useCount: 1876
      },
      {
        id: '6',
        name: '运营总监简历',
        thumbnail: '/static/templates/operations_manager.png',
        workYears: '5-10年',
        level: '专家',
        type: 'operation',
        isVip: true,
        createTime: '2023-04-15',
        likeCount: 276,
        useCount: 1654
      }
    ],
    
    // 模板类型
    templateTypes: [
      { id: 'default', name: '通用', icon: 'home' },
      { id: 'it', name: '互联网', icon: 'computer' },
      { id: 'finance', name: '金融科技', icon: 'rmb-circle' },
      { id: 'education', name: '教育', icon: 'book' },
      { id: 'medical', name: '医疗', icon: 'plus' },
      { id: 'construction', name: '建筑', icon: 'block' },
      { id: 'design', name: '设计', icon: 'photo' },
      { id: 'marketing', name: '市场', icon: 'share' },
      { id: 'sales', name: '销售', icon: 'shopping-cart' },
      { id: 'admin', name: '行政', icon: 'file-text' },
      { id: 'hr', name: '人事', icon: 'account' },
      { id: 'finance_admin', name: '财务', icon: 'rmb' },
      { id: 'legal', name: '法律', icon: 'lock' },
      { id: 'other', name: '其他', icon: 'more-dot-fill' }
    ],
    
    // 收藏的模板ID列表
    favoriteTemplates: [],
    
    // 当前选择的分类标签
    currentTab: 'all', // all, newest, vip, favorite
    
    // 当前选择的模板类型
    currentType: 'default',
    
    // 当前选中的模板ID
    currentTemplateId: '',
    
    // 用户使用过的模板ID列表
    usedTemplates: []
  }),
  
  getters: {
    // 获取所有模板
    allTemplates() {
      return this.templates
    },
    
    // 获取最新的模板（按创建时间排序）
    newestTemplates() {
      return [...this.templates].sort((a, b) => {
        return new Date(b.createTime) - new Date(a.createTime)
      })
    },
    
    // 获取VIP模板
    vipTemplates() {
      return this.templates.filter(template => template.isVip)
    },
    
    // 获取收藏的模板
    favoriteTemplateList() {
      return this.templates.filter(template => this.favoriteTemplates.includes(template.id))
    },
    
    // 根据当前选择的标签获取模板列表
    currentTemplates() {
      switch (this.currentTab) {
        case 'newest':
          return this.newestTemplates
        case 'vip':
          return this.vipTemplates
        case 'favorite':
          return this.favoriteTemplateList
        default: // 'all'
          return this.templates
      }
    },
    
    // 根据模板ID获取模板详情
    getTemplateById: (state) => (id) => {
      return state.templates.find(template => template.id === id)
    },
    
    // 获取类似模板推荐（同类型的其他模板）
    getSimilarTemplates: (state) => (id) => {
      const currentTemplate = state.templates.find(template => template.id === id)
      if (!currentTemplate) return []
      
      return state.templates
        .filter(template => template.id !== id && template.type === currentTemplate.type)
        .slice(0, 4) // 只返回最多4个推荐
    }
  },
  
  actions: {
    // 设置当前选择的分类标签
    setCurrentTab(tab) {
      this.currentTab = tab
    },
    
    // 设置当前选择的模板类型
    setCurrentType(type) {
      this.currentType = type
    },
    
    // 设置当前选中的模板ID
    setCurrentTemplateId(id) {
      this.currentTemplateId = id
    },
    
    // 添加收藏
    addToFavorite(id) {
      if (!this.favoriteTemplates.includes(id)) {
        this.favoriteTemplates.push(id)
        this.saveToStorage()
      }
    },
    
    // 取消收藏
    removeFromFavorite(id) {
      this.favoriteTemplates = this.favoriteTemplates.filter(item => item !== id)
      this.saveToStorage()
    },
    
    // 添加到已使用模板
    addToUsedTemplates(id) {
      if (!this.usedTemplates.includes(id)) {
        this.usedTemplates.push(id)
        this.saveToStorage()
      }
    },
    
    // 从本地存储加载数据
    loadFromStorage() {
      try {
        const favoriteData = uni.getStorageSync('favoriteTemplates')
        if (favoriteData) {
          this.favoriteTemplates = JSON.parse(favoriteData)
        }
        
        const usedData = uni.getStorageSync('usedTemplates')
        if (usedData) {
          this.usedTemplates = JSON.parse(usedData)
        }
      } catch (e) {
        console.error('Failed to load template data from storage', e)
      }
    },
    
    // 保存数据到本地存储
    saveToStorage() {
      try {
        uni.setStorageSync('favoriteTemplates', JSON.stringify(this.favoriteTemplates))
        uni.setStorageSync('usedTemplates', JSON.stringify(this.usedTemplates))
      } catch (e) {
        console.error('Failed to save template data to storage', e)
      }
    }
  }
}) 